package com.example.design.shejimoshi.action.template.模板方法结合回调函数;

/**
 * @Description TODO
 * @date 2022/10/26 15:08
 * @Author liuzhihui
 * @Version 1.0
 */
public final class GameTemplate {

    // 模板方法复用逻辑,callback留给子类去扩展
    public void play(Callback callback){
        initGame();
        startPlay();
        // 子类扩展
        callback.customOperation();
        endPlay();
    }

    // 共同的且繁琐的操作
    protected void initGame(){
        System.out.println("初始化游戏");
    }
    protected void startPlay(){
        System.out.println("游戏开始");
    }
    protected void endPlay(){
        System.out.println("游戏结束");
    }
}
